Over time, processing has moved from increased frequency processing (e.g., increasing the processing speed) to increased core processing (e.g., parallel processing). While newer central processing units (CPUs) and graphical processing units (GPUs) may, via their hardware capabilities, support parallel processing, current rendering engines have limited support for parallel processing. For example, many rendering engines run an established set of GPU Application Program Interfaces (APIs) such as DX9-11, OpenGL 4.x, and the like, which provide limited support for parallelism. Thus, to take advantage of parallel processing capabilities of newer hardware sets, there is a need for a rendering engine with a parallel design.
Current systems exist that attempt to provide parallel processing in rendering engines by using ad-hoc methods. However, such ad-hoc methods do not fully take advantage of the parallel processing capabilities of the underlying hardware as most ad-hoc methods attempt to parallelize serial data structures. There is a need to provide a parallel data structure that may be input to a parallel rendering engine in order to take full advantage of the parallel processing abilities of modern processing units.